/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package suministros.ejb30.DAO;

import java.math.BigDecimal;
import java.util.List;
import javax.ejb.Local;
import suministros.ejb30.TO.ComprobantePagoTO;
import suministros.ejb30.TO.DetalleImpuestoTO;
import suministros.ejb30.TO.DetalleOrdenTO;
import suministros.ejb30.TO.LicitacionActividadTO;
import suministros.ejb30.TO.LicitacionSuministroTO;
import suministros.ejb30.TO.OrdenTO;
import suministros.ejb30.TO.ParametrosConsultaTO;
import suministros.ejb30.entity.ComprobantePago;
import suministros.ejb30.entity.DetalleOrden;
import suministros.ejb30.entity.DetallePedidoSuministroPK;
import suministros.ejb30.entity.DetallePlantillaImpuesto;
import suministros.ejb30.entity.Orden;
import suministros.ejb30.helper.EmailVacioException;

/**
 *
 * @author Luis_Angel
 */
@Local
public interface SumiGestionOrdenesDAOLocal {

    String insertarOrden(Orden orden, List<DetalleOrden> detalles) throws Exception;

    String getIdOrden(Orden orden) throws Exception;

    OrdenTO isExisteOrden(String nro_orden) throws Exception;

    boolean insertarComporbanteDeOrden(ComprobantePago comp_pago, String cod_orden) throws Exception;

    boolean buscarComprobanteDeProveedor(String cod_proveedor, String serie, String numero) throws Exception;

    List<DetalleImpuestoTO> retornarDetallesDeImpuesto(int plantilla, BigDecimal monto) throws Exception;

    List<LicitacionSuministroTO> verificarDetallePedidoEnLicitacion(String cod_pedido) throws Exception;
    
    List<LicitacionSuministroTO> verificarDetallePedidoEnLicitacion(DetallePedidoSuministroPK detalle_pedido) throws Exception;

    List<LicitacionActividadTO> getActividadesPorLicitacionEspecifica(String id_licitacion, String id_suministro) throws Exception;

    List<OrdenTO> consultarOrden(ParametrosConsultaTO parametros, int tipo_orden,int pagActual, int pagTamanno) throws Exception;

    public List<ComprobantePagoTO> consultarComprobante(ParametrosConsultaTO parametros,int pagActual, int pagTamanno) throws Exception;

    boolean anularOrden(String nro_orden) throws Exception;

    List<DetalleOrdenTO> getListaDetalleOrden(String nro_orden) throws Exception;

    boolean modificarOrden(Orden orden, List<DetalleOrden> detalles) throws Exception;

    byte[] getComprobanteArchivo(int id_comprobante) throws Exception;

    boolean generaDocumentoAEmail(String nro_orden, int tipo, String cod_proveedor) throws EmailVacioException, Exception;

    int getNumeroDeOrdenes(ParametrosConsultaTO parametros, int tipo_orden) throws Exception;

     int getNumeroDeComprobantes(ParametrosConsultaTO parametros) throws Exception;

    public java.util.List<suministros.ejb30.TO.OrdenTO> getOrdenesSinComprobante(java.util.List<suministros.ejb30.TO.ZonaTO> zonas_usuario, java.lang.String id_empresa) throws java.lang.Exception;

    String verificaDetalleOrdenEnPresupuesto(List<DetalleOrdenTO> detalle_orden, int mes) throws Exception;

    public boolean modificarComprobanteArchivo(int id_comprobante, byte[] archivo)throws Exception;

    public java.util.List<suministros.ejb30.TO.DetalleOrdenTO> listarOrdenesSuministros(suministros.ejb30.TO.ParametrosConsultaTO parametros) throws java.lang.Exception;

    public java.util.List<suministros.ejb30.TO.OrdenTO> listarOrdenesProveedores(suministros.ejb30.TO.ParametrosConsultaTO parametros) throws java.lang.Exception;

    public java.util.List<suministros.ejb30.TO.OrdenTO> listarOrdenesTotales(suministros.ejb30.TO.ParametrosConsultaTO parametros) throws java.lang.Exception;

    public java.util.List<suministros.ejb30.TO.DetalleOrdenTO> listarOrdenesCuentas(suministros.ejb30.TO.ParametrosConsultaTO parametros) throws java.lang.Exception;

    public java.util.List<suministros.ejb30.TO.ComprobantePagoTO> getComprobantesOrden(java.lang.String nro_orden) throws java.lang.Exception;

    public java.util.List<suministros.ejb30.TO.RegularizacionMovimientoTO> getMovimientosRegularizar(java.lang.String ruc_proveedor) throws java.lang.Exception;

    public boolean regularizaMovimientos(java.util.List<suministros.ejb30.TO.RegularizacionMovimientoTO> lista,String nro_orden)throws Exception;

    public java.math.BigDecimal getMontoImpuesto(java.lang.Integer tipo_plantilla, java.math.BigDecimal sub_total) throws java.lang.Exception;

    public java.util.List<suministros.ejb30.TO.ImpuestoTO> getListaImpuestos() throws java.lang.Exception;

    public boolean eliminaImpuesto(int id_impuesto) throws java.lang.Exception;

    public boolean operaImpuesto(suministros.ejb30.entity.Impuesto impuesto,DetallePlantillaImpuesto dpi) throws java.lang.Exception;

    public boolean finalizarOrden(java.lang.String nro_orden) throws java.lang.Exception;

    public boolean modificaComprobante(suministros.ejb30.TO.ComprobantePagoTO comprobante) throws java.lang.Exception;
    
}
